home *** CD-ROM | disk | FTP | other *** search
- {
- ROBERT ROTHENBURG
-
- >I have created a Menu Bar, Now I think key #77 is left and key #77 is
- >assigned to "M" or one of them. But anyway so when someone pushes the
- >"M" key the menu bar moves. So how can I stop this, I only want it to
- >use the arrow keys and a few letters but not "M".
-
- You guessed it: USE BIOS CALLS!
- }
-
- Program ShowCodes; {* This Program will output the keyboard
- {* scan codes. Use the Function "ScanCode"
- {* in your Program once you know the codes
- {* For each keypress *}
- Uses
- Crt, Dos;
-
- Function Byte2Hex(numb : Byte): String; { Converts Byte to hex String }
- Const
- HexChars : Array[0..15] of Char = '0123456789ABCDEF';
- begin
- Byte2Hex[0] := #2;
- Byte2Hex[1] := HexChars[numb shr 4];
- Byte2Hex[2] := HexChars[numb and 15];
- end; { Byte2Hex }
-
- Function Numb2Hex(numb : Word): String; { Converts Word to hex String.}
- begin
- Numb2Hex := Byte2Hex(hi(numb)) + Byte2Hex(lo(numb));
- end; { Numb2Hex }
-
- Function ScanCode : Word;
- Var
- reg : Registers; {* You need the Dos Unit For this! *}
- begin
- reg.AH := $10; {* This should WAIT For a keystroke. If
- {* you'd like to POLL For a keystroke and
- {* have your Program do other stuff While
- {* "waiting" For a key-stroke change to
- {* reg.AH:=$11 instead... *}
- intr($16, reg);
- ScanCode := reg.AX {* The high-Byte is the "scan code" *}
- end; {* The low-Byte is the ASCII Character *}
-
- begin
- Repeat
- Writeln(Numb2Hex(ScanCode) : 6)
- Until False; {* You'll have to reboot after running this <g>*}
- end.
-
- {
- I "think" the arrow-key scan codes are:
-
- $4800 = Up Arrow
- $5000 = Down Arrow
- $4B00 = Left Arrow
- $4D00 = Right Arrow
- }